﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 原题连接：https://leetcode.cn/problems/monotone-increasing-digits/description/
/*
题目描述：
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时，我们称这个整数是单调递增的。

给定一个整数 n ，返回 小于或等于 n 的最大数字，且数字呈 单调递增 。



示例 1:

输入: n = 10
输出: 9
示例 2:

输入: n = 1234
输出: 1234
示例 3:

输入: n = 332
输出: 299


提示:

0 <= n <= 109
*/

// 开始解题：
// 方法——贪心
//class Solution {
//public:
//    int monotoneIncreasingDigits(int n) {
//        // 先将n转化成字符串
//        string str = to_string(n);
//        int size = str.size();
//        int begin = 0;
//        int i = 0;
//        // 找到第一个递减的位置
//        while (i < size - 1 && str[i + 1] >= str[i]) {
//            i++;
//        }
//        if (i == size - 1) {
//            return n;
//        }
//        while (i - 1 >= 0 && str[i - 1] == str[i]) {
//            i--;
//        }
//        begin = i;
//        str[begin]--;
//        begin++;
//        while (begin < size) {
//            str[begin] = '9';
//            begin++;
//        }
//        return stoi(str);
//    }
//};

//class b1 {
//public :
//	virtual void func1() {
//		cout << "b1 :: func()" << endl;
//	}
//};
//
//class b2 {
//public:
//	virtual void func2() {
//		cout << "b2 :: func()" << endl;
//	}
//};
//
//class d : public b1, public b2 {
//public :
//	virtual void func1() {
//		cout << "d :: func1()" << endl;
//	}
//	virtual void func2() {
//		cout << "d :: func2()" << endl;
//	}
//	virtual void func3() {
//		cout << "d :: func3()" << endl;
//	}
//};
//
//int main() {
//	d d1;
//	cout << "wait for a while~" << endl;
//	return 0;
//}

class A
{
public:
    virtual void f()
    {
        cout << "A::f()" << endl;
    }
};



class B : public A
{
private:
    virtual void f()
    {
        cout << "B::f()" << endl;
    }
};


int main() {
    A* pa = (A*)new B;
    pa->f();
    return 0;
}
